﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MvcCaja.Core;
using Chilis.Caja.Data.Models;


namespace MvcCaja.Controllers
{
    public class CuentaController : Controller
    {
        //
        // GET: /Cuenta/

        public ActionResult Index()
        {
            MesaService oMesaService = new MesaService();

            ViewBag.Mesas = oMesaService.obtener();
            return View();
        }

        public ActionResult GenerarCuenta(string CodigoOrden)
        {           
            CuentaService cCuentaService = new CuentaService();

            Orden oOrden = cCuentaService.obtenerDetalleOrdenSinCuenta(CodigoOrden);

            var clientes = cCuentaService.ObtenerClientes();

            List<Chilis.Caja.Web.Models.Cliente> clientList = new List<Chilis.Caja.Web.Models.Cliente>();

            foreach (var cliente in clientes)
            {
                clientList.Add(new Chilis.Caja.Web.Models.Cliente { IdCliente = cliente.IdCliente, NombreCliente= cliente.Nombres + " "+ cliente.ApellidoPaterno });
            }

            ViewBag.Clientes = new SelectList(clientList, "IdCliente", "NombreCliente");

            return View(oOrden);
        }


        [HttpPost]
        public ActionResult ObtenerProductos(string[] selectedProducts, FormCollection form)
        {
            string ordenId = form["ordenId"];

            string clientId = form["cliente"];

            if (selectedProducts != null && selectedProducts.Count() > 0 && !string.IsNullOrEmpty(ordenId) && !string.IsNullOrEmpty(clientId))
            {
                CuentaService cCuentaService = new CuentaService();
                cCuentaService.InsertarCuenta(ordenId, int.Parse(clientId), selectedProducts);
            }

            return RedirectToAction("GenerarCuenta", new { CodigoOrden = ordenId });
        }

        public ActionResult Imprimir(String CodigoOrden, int NumeroCuenta)
        {
            CuentaService cCuentaService = new CuentaService();

            Cuenta cCuenta = cCuentaService.obtener(CodigoOrden, NumeroCuenta);

            return View(cCuenta);
        }

        public ActionResult Eliminar(string idOrden, int NumeroCuenta, string idCliente)
        {
            CuentaService cCuentaService = new CuentaService();
          
            int clientId = 0;
            bool res = int.TryParse(idCliente, out clientId);

            if (res == true)
            {
                Session["clienteId"] = clientId;
            }

            if (Session["clienteId"] == null)
                Session["clienteId"] = 1;

            cCuentaService.Eliminar(idOrden, NumeroCuenta, int.Parse(Session["clienteId"].ToString()));

            return RedirectToAction("GenerarCuenta", new { CodigoOrden = idOrden });
        }    
    }
}
